package com.softtown.modules.sys.dao;

import com.softtown.common.dao.BaseDao;
import com.softtown.modules.sys.entity.CompSysParamEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: Dingyayong
 * @Date: 2019/7/30 17:46
 * @Description:
 */
@Mapper
public interface CompSysParamDao extends BaseDao<CompSysParamEntity> {

    /**
     * 根据公司ID找费目层级
     *
     * @param compId
     * @return
     * @author Dingyayong
     * @date 2019/6/6 17:25
     */
    CompSysParamEntity findItemMaxLevel(Long compId);

    /**
     * 根据公司ID找默认币种
     *
     * @param compId
     * @return
     * @author Dingyayong
     * @date 2019/6/6 17:25
     */
    CompSysParamEntity findCurrValue(Long compId);

    /**
     * 通过公司ID来查找费用归集码必须参数值
     * @param companyId
     * @return com.softtown.modules.sys.entity.CompSysParamEntity
     * @Author fuming
     * @Date 2020/5/26 17:17
     */
    CompSysParamEntity findExpClctCdIsReqTrvlExpPlanValue(Long companyId);

    /**
     * 通过公司ID来查找行程明细必须参数值
     * @param companyId
     * @return com.softtown.modules.sys.entity.CompSysParamEntity
     * @Author fuming
     * @Date 2020/5/26 17:18
     */
    CompSysParamEntity findTodoIsReqTrvlExpPlanValue(Long companyId);

    /**
     * 差旅报销前出差申请必须
     *
     * @param compId
     * @return
     * @author Dingyayong
     * @date 2019/6/6 17:25
     */
    CompSysParamEntity checkExpenseAppl(Long compId);

    /**
     * 自己审批自己单据
     *
     * @param compId
     * @return
     * @author Dingyayong
     * @date 2019/6/6 17:25
     */
    CompSysParamEntity checkApplBySelf(Long compId);
    /**
     * 获取费用归集码是否必须(差旅报销)
     *
     * @param compId
     * @return
     * @author Dingyayong
     * @date 2019/6/6 17:25
     */
    CompSysParamEntity getExpClctCdExpense(Long compId);

    /**
     * 费用发生/核销确定基准
     *
     * @param compId
     * @return
     * @author Dingyayong
     * @date 2019/6/6 17:25
     */
    CompSysParamEntity getGenlExpActTiMing(Long compId);

    /**
     * 根据公司和参数查询参数值
     * @param compId
     * @param paramCode
     * @return com.softtown.modules.sys.entity.CompSysParamEntity
     * @Author fuming
     * @Date 2020/5/26 17:18
     */
    CompSysParamEntity findValueByCompAndCode(@Param("compId") Long compId, @Param("paramCode") String paramCode);

    /**
     * 更新系统参数
     * @param compSysParamEntity
     * @return void
     * @Author fuming
     * @Date 2020/5/26 17:18
     */
    void updateCompParam(CompSysParamEntity compSysParamEntity);

    /**
     * 获取公司所有参数
     * @param compId
     * @param param
     * @return java.util.List<com.softtown.modules.sys.entity.CompSysParamEntity>
     * @Author fuming
     * @Date 2020/5/26 17:19
     */
    List<CompSysParamEntity> getCompParamsList(@Param("compId") Long compId,@Param("param") String param);
}
